/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.nys.conci.backend.servicio;

import com.nys.conci.backend.entidad.EnumParametros;
import com.nys.conci.backend.entidad.Parametro;
import com.nys.conci.base.ServicioBase;
import com.nys.conci.base.excepcion.ExcepcionServicio;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.NoResultException;
import javax.persistence.Query;

/**
 *
 * @author gbsys9
 */
@Stateless
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
public class ServicioParametros extends ServicioBase {

    /**
     * Retorna lista de parámetros
     * @return lista de parámetros
     */
    public List<Parametro> retornaParametros() {
        try {
            Query q = em.createNativeQuery("SELECT * FROM sys_params", Parametro.class);
            return (List<Parametro>) q.getResultList();
        } catch (NoResultException nre) {
            return new ArrayList<Parametro>();
        } catch (Exception ex) {
            throw new ExcepcionServicio("Ha ocurrido un error recuperando los parámetros",
                    "Ha ocurrido un error recuperando los parámetros. En "
                    + getClass(), ex, getClass());
        }
    }
    /**
     * Guarda los cambios realizados al parámetro,
     * ya sea en la descripción o en el valor
     * @param parametro 
     */
    public void guardarCambios(Parametro parametro) {
        try {
            actualizar(parametro);
        } catch (Exception ex) {
            throw new ExcepcionServicio("Ha ocurrido un error guardando los cambios en el parámetro",
                    "Ha ocurrido un error guardando los cambios en el parámetro. En "
                    + getClass(), ex, getClass());
        }
    }
    
    /**
     * 
     */
    public String retornaValorParametroDesdeEnumParametro (EnumParametros param){
           try {
            Query q = em.createNativeQuery("select valor from sys_params where id_params = ?");
            q.setParameter(1, param.getId());
            Object o = q.getSingleResult();
            return o.toString();
        } catch (NoResultException nre) {
            return "";
        } catch (Exception ex) {
            throw new ExcepcionServicio("Ha ocurrido un error recuperando los parámetros",
                    "Ha ocurrido un error recuperando los parámetros. En "
                    + getClass(), ex, getClass());
        }
                
    }
}
